<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // //使用var声明变量
        // var name='kimi';
        // function greet(){
        //     var greeting='Hello'
        //     console.log(greeting+','+name);
        // }
        // greet()

        // //使用let和const声明变量
        // let firstName='kimi'
        // const lastName='AI'
        // {
        //     let age=1
        //     console.log(firstName+' '+lastName+' is '+age+' yearold. ');
        // }

        // console.log(age);尝试访问age将导致错误,因为他不在当前作用域

        //变量的使用更新
        // let age3=18
        // age3=19
        // //let age4=19
        // let age5=18,nua5me='迪丽热巴'
        // console.log(age5,nua5me);

        //输入用户名案例
        // let uname=prompt('请输入姓名')
        // document.write(uname)

        // //交换两个变量
        // let num1='你表哥'
        // let num2='你表妹'
        // let temp
        // //都是右边给左边
        // temp=num1
        // num1=num2
        // num2=temp
        // console.log(num1,num2);

        // //变量的命名规范
        // // 不要用保留字
        // // let if = 10
        // let num1$_ = 11
        // // let nav-bar = 11
        // // let 1num = 10
        // // 区分大小写
        // let bar = ''
        // let Bar = '演员'
        // console.log(bar, Bar)
        // // 变量命名：推荐使用小驼峰
        // let studentId = '100'
        // // 大驼峰，一般定义类名使用
        // let StudentName = '娃哈哈'
        // StudentName = 'jsjsjs'

        //输入姓名年龄案例
        // let uname = prompt('请输入姓名')
        // let age = prompt('请输入年龄')
        // let gender = prompt('请输入性别')
        // document.write(uname, age, gender)

        // //体验数组
        // // let arr = [10, 20, 30]
        // // 1. 声明数组 有序 
        // let arr = ['刘德华', '张学友', '黎明', '郭富城', '周星驰', 10]
        // // 2. 使用数组  数组名[索引号] 从0
        // console.log(arr)
        // console.log(arr[0]) // 刘德华
        // console.log(arr[4])
        // // 3. 数组长度 =  索引号 + 1 
        // console.log(arr.length)  // 6
        // // let 刘德华 = 10
        // // console.log(刘德华)

        // //常量 不允许更改值
        // const PI=3.14
        // console.log(PI);
        // PI=3.15
        // console.log(PI);
        // //常量声明的时候必须赋值
        // // const PII


        // //变量类型
        // //变量类型的基本使用
        // let number = 42; // 声明一个数字类型的变量
        // let message = "I am a string"; // 声明一个字符串类型的变量
        // let isTrue = true; // 声明一个布尔值类型的变量
        // let nothing = null; // 声明一个 null 类型的变量
        // let notDefined; // 声明一个未定义类型的变量，其值为 undefined
        // console.log(typeof number); // 输出: number
        // console.log(typeof message); // 输出: string
        // console.log(typeof isTrue); // 输出: boolean
        // console.log(typeof nothing); // 输出: object (null 在 JavaScript 中被当作 object 类型)
        // console.log(typeof notDefined); // 输出: undefined


        //数字类型
        //基本数据类型-数字型
        // js 弱数据类型的语言 只有当我们赋值了，才知道是什么数据类型
        // 这里尝试声明变量 num 两次，但第二次声明会覆盖第一次的声明。
        // 因此，num 最终的值是 10.11。
        let num = 'haha'; // 声明一个字符串类型的变量
        // let num = 10.11;  // 重新声明 num，这次是数值类型
        console.log(num); // 输出: 10.11
        // 1 + 1 是一个简单的加法运算，结果为 2。
        console.log(1 + 1); // 输出: 2
        // 1 * 1 是乘法运算，结果同样是 1。
        console.log(1 * 1); // 输出: 1
        // 1 / 1 是除法运算，结果为 1。
        console.log(1 / 1); // 输出: 1
        // 4 % 2 是求余数运算，结果为 0，因为 4 除以 2 没有余数。
        console.log(4 % 2); // 输出: 0
        // 5 % 3 是求余数运算，结果为 2，因为 5 除以 3 余 2。
        console.log(5 % 3); // 输出: 2
        // 3 % 5 是求余数运算，结果为 3，因为 3 除以 5 余 3。
        console.log(3 % 5); // 输出: 3
        // 尝试将字符串 '合适字符串' 减去数字 2，这会导致字符串被转换为 NaN（Not a Number）。
        console.log('合适字符串' - 2); // 输出: NaN
        // NaN 减去 2 仍然是 NaN，因为 NaN 是一个表示非数字的特殊值。
        console.log(NaN - 2); // 输出: NaN
        // NaN 加上 2 也是 NaN，因为任何涉及 NaN 的运算结果都是 NaN。
        console.log(NaN + 2); // 输出: NaN
        // NaN 除以 2 同样是 NaN。
        console.log(NaN / 2); // 输出: NaN
        // NaN 与 NaN 比较时，结果总是 false，因为 NaN 是唯一的非等价值。
        console.log(NaN === NaN); // 输出: false
    </script>
</body>

</html>